When communicating a message between two points on a computer network, the message can be sent in discrete-sized packets. Properties of the network constrain the maximum size of the packet, or maximum transfer unit (MTU), which can be sent along a network path 20 from a particular sending point 22 to a particular receiving point 24, as shown in FIG. 1. For example, the underlying hardware used to implement the path on the network, such as hardware using 100 Mbit Ethernet technology, will impose limitations on the path MTU. Furthermore, the data packets may pass through several intermediary points 26, such as routers, as they travel from the sending point 22 to the receiving point 24. The path MTU may be further limited by the technology used between some of these intermediary points.
FIG. 2a shows a typical Internet Protocol (IP) data packet. Prepended to the data 301 is an IP header 303, containing information necessary for communicating the packet from the sending point 22 to the receiving point 24. FIG. 2b shows an IP datagram that has been encapsulated with an additional outer IP header 34. This additional encapsulation can take place at the sending point 22 or one of the routers. Encapsulating, with an outer header, data that has previously been encapsulated with an inner header is commonly referred to as IP-in-IP encapsulation, or tunneling.
If the sending point 22 sends a packet that is larger than the path MTU, routers along the network path will fragment the packet 28 into smaller pieces, or fragments 29, during the transmission. Typical fragments 29 are shown in FIG. 2c. After creating the fragments, the router re-encapsulates the data such that each of the fragments 29 will have the tunneling outer header 34 prepended to the data 30, but only the first fragment 29a of the data packet will have the inner header 32. These fragments 29 are cached at the receiving point 24 until all of the fragments 29 of the packet have been received or until the reassembly timer for the datagram has expired and the fragments are discarded. The information in the headers 32, 34 gives the receiving point information on how the fragments 29 should be grouped and handled upon receipt. As shown in FIG. 2d, the fragments 29 can then be reassembled (into the packet 28) from the cache at the receiving point 24. After reassembly, the tunneling outer IP header can be stripped off, leaving the inner packet 31 with only the inner IP header prepended. The packet 31 can then be sent on in the usual way.
One way of eliminating the consumption of computing resources needed for caching and reassembly, for example, in the tunneling context, is for the sending point 22 to determine the path MTU in advance. With knowledge of the path MTU, the sending point 22 can send packets 52, shown in FIG. 2e, which will be small enough so that they will not be fragmented in their travel to the destination. Because a router does not fragment the packets 52, they will not need to be cached and reassembled at the receiving point 24. The router simply has to remove the outer IP header and send the encapsulated datagram on its way. With reference to FIG. 3, the sending point 22 begins the determination by sending a probe packet in which a “don't fragment” bit is set (steps 300-304). The size of the probe packet is the largest possible packet that the networking technology at the sending point will allow (the MTU of the link layer). Because the “don't fragment” bit is set, if the packet is larger than the MTU of the path, it will not be fragmented. Instead, an error message will be sent back to the sending point if that packet otherwise would have been fragmented (steps 306-308). The sending point then sends a smaller probe packet with the “don't fragment” bit set. This process (steps 300-308) is repeated until a packet is sent that is small enough to travel to the receiving point without fragmenting. When it receives no error message, the sending point knows that the size of the message that was able to pass is the path MTU (step 310).